﻿/**********************************************************************
 * @file   SEAJunctionUserDefWidget.h
 * @brief  SEA连接user-define界面
 * @author BaGuijun (baguijun@163.com)
 * @date   2024-11-13
 *********************************************************************/
#ifndef _SEAJunctionUserDefWidget_H
#define _SEAJunctionUserDefWidget_H

#include "GUIJunctionDialogAPI.h"
#include "GUIWidget/GUIWidgetBase.h"
#include "FITK_Component/FITKAcousticsModel/FITKSEAAbstractJunction.h"

namespace Ui {
    class SEAJunctionUserDefWidget;
}

namespace Acoustics {
    class FITKSEAAbstractJunction;
}

class QComboBox;

namespace GUI
{
    /**
     * @brief  SEA连接user-define界面
     * @author BaGuijun (baguijun@163.com)
     * @date   2024-11-13
     */
    class GUIJunctionDialogAPI SEAJunctionUserDefWidget :public GUIWidgetBase
    {
        Q_OBJECT;
    public:
        /**
         * @brief    构造函数
         * @param[i] parent    父对象
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-13
         */
        SEAJunctionUserDefWidget(QWidget* parent = nullptr);
        /**
         * @brief    析构函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-13
         */
        ~SEAJunctionUserDefWidget();
        /**
         * @brief    初始化表格
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-14
         */
        void initTable(QList<int> subSysIds);
        /**
         * @brief    通过数据设置界面
         * @param[i] junData   连接数据
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-13
         */
        void setDataToWidget(Acoustics::FITKSEAAbstractJunction* junData);
        /**
         * @brief    通过界面设置数据
         * @param[i] junData  连接数据
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-13
         */
        void getDataFromWidget(Acoustics::FITKSEAAbstractJunction* junData);
    private slots:
        ;
        /**
         * @brief    Select按钮点击事件
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-14
         */
        void on_pushButton_SetAll_clicked();
        /**
         * @brief    comboBox选择事件
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-14
         */
        void slotComboBoxSelect();
    private:
        /**
         * @brief    更新表格标题
         * @param[i] subSysIds    子系统列表
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-13
         */
        void initTableTitle(QList<int> subSysIds);
        /**
         * @brief    更新表格内部数据（所需要的子系统会从title中获取）
         * @param[i] subSysIds    子系统列表
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-14
         */
        void initTableValue(QList<int> subSysIds);
        /**
         * @brief    创建ComboBox
         * @param[i] rowIndex
         * @param[i] colmunIndex
         * @return   QComboBox*  创建comboBox
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-14
         */
        QComboBox* createComboBox(int rowIndex, int colmunIndex);
        /**
         * @brief    查找combox
         * @param[i] str               查找信息
         * @return   QComboBox*        查找对象
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-14
         */
        QComboBox* findComboBox(Acoustics::FITKSEAJunUserDefStr str);
    private:
        /**
         * @brief  ui对象
         * @author BaGuijun (baguijun@163.com)
         * @date   2024-11-13
         */
        Ui::SEAJunctionUserDefWidget* _ui = nullptr;
    };
}

#endif
